package biz.ezcom.spring.aop.service.aop;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class UserAop {
	
//	@Pointcut("execution (public * biz.ezcom.spring.aop.service.impl.UserServiceImpl.*(..))")
	@Pointcut("execution (* **(..))") //所有类的所有方法
//	@Pointcut("execution (public * **(..))") //所有类的public方法
//	@Pointcut("execution (public void **(..))") //所有类的public void方法
//	@Pointcut("execution (public void biz.ezcom..*(..))") //biz.ezcom包及子包下的public void方法
//	@Pointcut("execution (public void biz.ezcom.spring.aop.service.impl.*.*(..))") //biz.ezcom.spring.aop.service.impl包下所有类 public void方法
//	@Pointcut("execution (public * biz.ezcom.spring.aop.service.impl.*.*(..)) && args(int)")//biz.ezcom.spring.aop.service.impl包下所有类 public void (int 参数)的方法
//	@Pointcut("execution (public * biz.ezcom.spring.aop.service.impl.*.*(..)) && args(int,String,String)")//biz.ezcom.spring.aop.service.impl包下所有类 public void (int,String,String 参数)的方法
//	@Pointcut("execution (public * biz.ezcom.spring.aop.service.impl.*.*())") ////biz.ezcom.spring.aop.service.impl包下所有类 public void (不带参数的)方法
	public void pointcut(){};
	
	@Before(value="pointcut()")//同时使用两个Pointcut的组合：&& || !
	public void before(){
		System.out.println("UserAop.before()");
	}
}
